1. 자바(Java) 란?
1.1 JAVA
자바(Java)는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다
1.2 JAVA를 쓰는 이유
- 운영체제에 독립적이다
- os별로 프로그램을 따로 작성하지 않아도 JVM(자바 가상머신)을 통해 운영체제에 독립적으로 사용가능하다.
- 즉 어떤 환경에서도 JAVA 코드만 있다면 사용 가능하다.
- 객체 지향 언어이다
- 자동 메모리 관리(Garbage Collection) 기능이 있다.
- 다양한 API를 통해 네트워크와 분산 처리를 지원한다
- 멀티 스레드를 지원한다.
- 동적 로딩을 지원한다
- 프로그램 실행 시 모든 객체(Class) 가 동작하는 것이 아닌 필요한 시점에만 로딩이 된다.
객체 지향 : 쉽게 생각하면 “캡슐” 이라고 생각하면 된다. 하나의 객체 안에 여러가지 요소가 담긴다
OS : Operating System의 약자로 운영체제 이다 (ex) window, mac, Linux 등등..
1.3 JVM(Java Virtual Machine)
자바를 실행하기 위한 가상 머신, 자바로 작성된 코드는 JVM 안에서만 동작한다. 일반 어플리케이션의 코드는 os만 거치고 하드웨어로 전달되는데, java어플리케이션은 JVM을 한번 더 거치기 때문에 속도가 좀 더 느리다는 단점이 있다.
2. JAVA 사용을 위한 환경구축 (JDK 설치 및 환경설정)
2.1 JDK 설치
JDK 버전은 중요하진 않지만 해당 수업에서는 JDK 17버전을 사용할 예정이다.
Oracle JDK? Open JDK?
- Oracle은 유료고 Open은 무료이다. 유지보수, 업데이트, 속도 면에서 Orcale JDK가 성능이 좀더 우수하다
JDK 별 주요 발전
- JAVA 8
- Lamda (익명의 클래스의 사용을 람다를 이용하여 더욱 간결하고 직관적으로 구현)
- stream (반복적인 코드 해결)
- JAVA10
- var 키워드 추가(로컬 변수 유형 추론)
- 병렬 처리 가비지 컬렉션 도입, 성능 향상
- JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능
..등 여러가지 요소가 있지만 중요한건 아님. 11 or 17버전 lts(장기 지원) JDK를 다운받아 사용하면 된다.
2.2 JDK PATH(환경변수) 등록
PATH?
PATH(경로)는 특정한 파일이 있는 위치를 나타내는 주소. ex) c:\\desktop 등등
JDK PATH를 등록해야 하는 이유
JDK를 설치하게 되면 폴더 형태로 설치가 된다
이처럼 설치 이후에 실행 파일(.exe) 형태로 실행시켜야 하는데 매번 저 경로까지 이동해서 프로그램을 실행시키기는 매우 번거롭기 때문이다.
window 검색창에 환경변수를 입력하고 환경변수를 새로 등록해주면 된다.
JDK 폴더에 들어있는 주요 실행파일
- javac.exe
- 자바 컴파일러, 자바 소스코드를 바이트코드로 컴파일한다
- java.exe
- 자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행한다
- jar.exe
- 압축 프로그램, 클래스 파일과 프로그램의 실행에 대한 파일을 jar파일로 압축하거나 압축 해제한다.
2.3 테스트하기
에디터
eclipse, IntelliJ와 같은 에디터 프로그램을 사용해도 되지만
notepad++와 같은 에디터를 사용해도 문제는 없다.
간단하게 코딩할 때는 vs code, notepad++ 프로젝트로는 IntelliJ나 eclipse를 추천한다.
Hello.java 컴파일
아래 코드의 public static void main(String[] args]는 main 메서드의 선언부인데 프로그램을 실행할 때 java.exe에 의해 호출될 수 있도록 약속된 부분입니다.
해당 코드를 복사 붙여 넣은 후 저장합니다.
💀 주의 사항 💀
- java를 실행할 때에는 항상 main 함수를 포함한 클래스의 이름을 적어줘야 합니다.
- public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 같아야 합니다.
- 한개의 소스 코드에는 한개의 public Class가 존재합니다. 다른 클래스를 정의할 수는 있지만 public이 붙으면 안됩니다.
자주 발생하는 에러와 해결 방법
cannot find symbol / cannot resolve symbol
→ 지정된 변수나 함수를 찾을 수 없다는 뜻으로 변수 또는 함수의 이름을 잘못 사용하거나 선언되지 않은 변수나 메서드를 사용할때
Exception in thread “main” java.lang.NoSuchMethodError:main
→ main method을 찾을 수 없다는 뜻이다.
class, interface, or enum expected
→ 열린 괄호와 닫힌 괄호의 개수가 다를 경우 발생하는 에러이다.
그 외에는 에러의 이름을 잘 읽어보면 알 수 있다. 그래도 모르겠다면 구글링을 시도하자.
2.4 코드의 실행 과정, 주석
실행 과정
- *.class 파일을 로드한다
- 클래스 파일을 검사한다( 형식, 악성 코드 유무 )
- 지정된 클래스에서 main method를 호출한다.
주석
주의 사항! “”와 같이 큰따옴표 안에 있는 주석은 문자열로 인식된다.